package com.lxk.service;

import com.lxk.pojo.Goods;
import com.lxk.pojo.Ticket;
import com.lxk.vo.GoodsNormalModel;
import com.lxk.vo.GoodsTicketModel;
import com.lxk.vo.PageModel;

/**
 * @author JohnSoybean
 * @create 2020/3/23 15:32
 * @description
 */
public interface GoodsService {

    /**
     * 获取下架商品总页数
     * @param num
     * @return
     */
    Integer getDownGoodsTotalPages(Integer num);

    /**
     * 获取下架商品分页
     * @param pageIndex
     * @param num
     * @param totalPages
     * @return
     */
    PageModel<GoodsNormalModel> selDownGoodsPage(Integer pageIndex, Integer num, Integer totalPages, Integer sort, Integer order);



    /**
     * 按id查找商品原始信息
     * @param goodsId
     * @return
     */
    GoodsNormalModel selNormalGoodsById(Integer goodsId);

    /**
     * 获取普通商品总页数
     * @param num
     * @return
     */
    Integer getNormalGoodsTotalPages(Integer num);

    /**
     * 获取普通商品分页
     * @param pageIndex
     * @param num
     * @param totalPages
     * @return
     */
    PageModel<GoodsNormalModel> selNormalGoodsPage(Integer pageIndex, Integer num, Integer totalPages, Integer sort, Integer order);

    /**
     * 添加普通商品
     * goodsStat生成
     * goodsComkey生成
     * @param goods
     * @return
     */
    Integer addNormalGoods(Goods goods, Integer isUpper);




    /**
     * 按id查找卡券商品原始信息
     * @param goodsId
     * @return
     */
    GoodsTicketModel selTicketGoodsById(Integer goodsId);

    /**
     * 获取卡券商品总页数
     * @param num
     * @return
     */
    Integer getTicketGoodsTotalPages(Integer num);

    /**
     * 获取卡券商品分页
     * @param pageIndex
     * @param num
     * @param totalPages
     * @return
     */
    PageModel<GoodsTicketModel> selTicketGoodsPage(Integer pageIndex, Integer num, Integer totalPages, Integer sort, Integer order);

    /**
     * 添加卡券商品
     * goodsStat生成
     * goodsComkey生成
     * @param goods
     * @return
     */
    Integer addTicketGoods(Goods goods, Integer isUpper);

    /**
     * 修改卡券
     * @param ticket
     */
    void modifyTicket(Ticket ticket);

    /**
     * 新增卡券
     * @param ticket
     */
    void addTicket(Ticket ticket);



    /**
     * 更新商品信息
     * @param goods
     * @return
     */
    Integer modifyGoodsInfo(Goods goods);

    /**
     * 下架商品
     * @param goodsId
     * @return
     */
    Integer shiftGoodsUpper(Integer goodsId, Integer isUpper);

    /**
     * 删除商品
     * @param goodsId
     * @return
     */
    Integer deleteGoods(Integer goodsId);

    /**
     * 获取商品详情信息
     * @param goodsId
     * @return
     */
    String getGoodsDetailText(Integer goodsId);

    /**
     * 更新商品详情信息
     * @param goodsId
     * @param goodsDetail
     * @return
     */
    Integer updGoodsDetailText(Integer goodsId, String goodsDetail);


    /**
     * 删除商家名下所有商品
     * @param shopId
     * @return
     */
    Integer deleteShopGoods(Integer shopId);


    /**
     * 退款成功：增加库存，减销量
     * @param goodsId
     * @param goodsCount
     * @return
     */
    Integer addGoodsStock(Integer goodsId, Integer goodsCount);


    /**
     * 获取可参加活动商品总页数
     * @param num
     * @return
     */
    Integer getActivityGoodsTotalPages(Integer num);

    /**
     * 获取可参加活动商品分页
     * @param pageIndex
     * @param num
     * @param totalPages
     * @return
     */
    PageModel<GoodsNormalModel> selActivityGoodsPage(Integer pageIndex, Integer num, Integer totalPages, Integer sort, Integer order);

    /**
     * 查找商品
     * @param goodsId
     * @return
     */
    Goods selById(Integer goodsId);

}
